Kubernetes,通常縮寫為“K8s”,編排容器化應用程序以在主機集群上運行。K8s 系統使用本地基礎設施或公共云平臺自動部署和管理云原生應用程序。它在Kubernetes 集群中分配應用程序工作負載并自動滿足動態容器網絡需求。Kubernetes 還將存儲和持久卷分配給運行的容器,提供自動擴展,并持續工作以保持應用程序的所需狀態,提供彈性。了解企業如何使用 Kubernetes 大規模構建、部署和運行現代應用程序。
Kubernetes 功能
Kubernetes 有許多特性可以幫助跨多個主機編排容器,自動化 K8s 集群的管理,并通過更好地利用基礎設施來最大限度地利用資源。重要功能包括:
- 自動縮放。根據使用情況自動擴展容器化應用程序及其資源
- 生命周期管理。自動化部署和更新,能夠:
- 回滾到以前的版本
- 暫停并繼續部署
- 聲明式模型。聲明所需的狀態,K8s 在后臺工作以維護該狀態并從任何故障中恢復
- 韌性和自我修復。自動放置、自動重啟、自動復制和自動縮放提供應用程序自我修復
- 持久存儲。能夠動態安裝和添加存儲
- 負載均衡。Kubernetes 支持多種內部和外部負載均衡選項,以滿足不同的需求
- DevSecOps 支持。DevSecOps是一種高級安全方法,可簡化和自動化跨云的容器操作,在整個容器生命周期中集成安全性,并使團隊能夠更快地交付安全、高質量的軟件。將 DevSecOps 實踐與 Kubernetes 相結合可提高開發人員的工作效率。
Kubernetes 架構及其工作原理?
容器以可移植且易于部署的形式封裝應用程序。Kubernetes架構旨在運行容器化應用程序。一個 Kubernetes 集群由至少一個控制平面和至少一個工作節點(通常是物理或虛擬服務器)組成。控制平面有兩個主要職責。它通過 API 服務器公開 Kubernetes API 并管理組成集群的節點。控制平面做出有關集群管理的決策,并檢測和響應集群事件。
在 Kubernetes 中運行的應用程序的最小執行單元是 Kubernetes Pod,它由一個或多個容器組成。Kubernetes Pod 在工作節點上運行。
其他 Kubernetes 術語
了解作為控制平面一部分或在 Kubernetes 節點上執行的主要 K8s 組件的名稱和功能非常重要。
控制平面有四個主要組件,用于控制通信、管理節點和跟蹤 Kubernetes 集群的狀態。
- Kube-apiserver。顧名思義,kube-apiserver 暴露了 Kubernetes API。
- 等。存儲與 Kubernetes 集群相關的所有數據的鍵值存儲。
- Kube 調度程序。監視沒有分配節點的新 Kubernetes Pod,并根據資源、策略和“親和性”規范將它們分配給節點執行。
- Kube-控制器-經理。控制平面的所有控制器功能都編譯成一個二進制文件:kube-controller-manager。
一個 K8s 節點具有三個主要組件:
- 庫貝萊特。確保必要容器在 Kubernetes Pod 中運行的代理。
- Kube 代理。在集群中的每個節點上運行以維護網絡規則并允許通信的網絡代理。
- 容器運行時。負責運行容器的軟件。Kubernetes 支持任何符合 Kubernetes CRI(容器運行時接口)的運行時。
需要注意的其他術語包括:
- Kubernetes 服務。Kubernetes服務是一組 Kubernetes Pod 的邏輯抽象,它們都執行相同的功能。Kubernetes 服務被分配了唯一的地址,即使 pod 實例來來去去,這些地址也保持不變。
- 控制器。控制器確保 Kubernetes 集群的實際運行狀態盡可能接近期望的狀態。
- 運算符。Kubernetes Operators 允許您為類似于運行手冊的應用程序封裝特定領域的知識。通過自動執行特定于應用程序的任務,Operators 允許您更輕松地在 K8s 上部署和管理應用程序。
Kubernetes 優勢
Kubernetes 平臺之所以流行,是因為它提供了許多重要優勢:
- 可移植性。容器可以在從虛擬環境到裸機的各種環境中移植。所有主要的公共云都支持 Kubernetes,因此,您可以在 K8s 上跨許多不同的環境運行容器化應用程序。
- 集成性和可擴展性。Kubernetes 可擴展以與您已經依賴的解決方案一起使用,包括日志記錄、監控和警報服務。Kubernetes 社區正在開發各種與 Kubernetes 互補的開源解決方案,創建一個豐富且快速增長的生態系統。
- 成本效率。Kubernetes 固有的資源優化、自動擴展以及在提供最大價值的地方運行工作負載的靈活性意味著您可以控制 IT 支出。
- 可擴展性。云原生應用程序水平擴展。Kubernetes 使用“自動擴展”,啟動額外的容器實例并根據需求自動擴展。
- 基于 API 的.?Kubernetes 的基本結構是它的 REST API。Kubernetes 環境中的一切都可以通過編程來控制。
- 簡化的 CI/CD。CI/CD是一種 DevOps 實踐,可自動構建、測試應用程序并將其部署到生產環境。企業正在集成 Kubernetes 和 CI/CD 以創建可動態適應負載的可擴展 CI/CD 管道。
什么是容器編排?
容器編排自動化了運行容器化工作負載和服務所需的大部分任務,包括對 Kubernetes 容器生命周期至關重要的操作:配置、部署、擴展、網絡和負載平衡。
Kubernetes 與 Docker
Docker 是一個用于創建容器化應用程序的軟件平臺。K8s 自動運行使用 Docker 或其他工具創建的容器化、云原生應用程序的過程。公司經常一起使用 Docker 和 Kubernetes。